package org.wedding.center.service;

import org.wedding.center.dto.query.OrderQuery;
import org.wedding.center.entity.OrderInfo;

import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
import org.wedding.utils.CommonResult;
import org.wedding.dto.PageModel;

/**
 * 订单信息表(OrderInfo)表服务接口
 *
 * @author songkaiyue
 * @since 2025-05-14 16:25:44
 */
public interface OrderInfoService extends IService<OrderInfo> {

     /**
     * 分页查询
     * @return CommonResult 统一返回类
     */
    CommonResult<PageModel> findAll(OrderQuery query);

    CommonResult<PageModel> findAllUser(OrderQuery query);

     /**
     * 新增对象数据
     *
     * @param orderInfo 筛选条件
     * @return CommonResult 统一返回类
     */
    CommonResult<OrderInfo> add(OrderInfo orderInfo);

     /**
     * 通过主键查询数据
     *
     * @param id 主键
     * @return CommonResult 统一返回类
     */
    CommonResult<OrderInfo> view(String id);

    /**
     * 通过核销码查询数据
     *
     * @param redeemCode
     * @return CommonResult 统一返回类
     */
    CommonResult<OrderInfo> findByRedeemCode(String redeemCode);

     /**
     * 通过主键更新数据
     *
     * @param orderInfo 筛选条件
     * @return CommonResult 统一返回类
     */
    CommonResult updateEntity(OrderInfo orderInfo);

    /**
     * 通过主键删除数据
     *
     * @param ids 主键
     * @return CommonResult 统一返回类
     */
    CommonResult delete(List<String> ids);

    CommonResult redeem(String redeemCode);

    /**
     * 获取预约信息
     *
     * @param type 0下单预约日期  1酒店预约时间
     * @return CommonResult 统一返回类
     */
    CommonResult<List<String>> getAppointment(String type);

    /**
     * 订单付款回调
     * @param code
     * @param payStatus
     * @return
     */
    CommonResult<OrderInfo> payStatus(String code, String payStatus,boolean isDeposit);


    OrderInfo findByCode(String code);

    /*
     * 更新订单状态
     */
    void updateOrderStatus(String orderNo, String status);
}
